template<class T>
class IComparer : virtual public IObject
{
public:
	virtual bool Compare(T& src) const = 0;
};

template<class T, class Value = T>
class TComparer : public TObject, virtual public IComparer<T>
{
	IDKClass
protected:
	Value mCompare;
public:
	typedef Value FindValue;

	TComparer(Value cmp) : mCompare(cmp)
	{}
};